#include "nivelRed.h"

#define NIVEL_RED_OK 0				/*!< Codigo de OK del Nivel de Red*/
#define NIVEL_RED_ERROR -1			/*!< Codigo de ERROR del Nivel de Red*/

short nivelRedInicializado=0;		/*Flag de Nivel de Red inicializado*/

int nivelRed_inicializa()
{
	if(nivelRedInicializado){		/*Nivel de Red ya inicializado*/
		return NIVEL_RED_OK;
	}
	
	/*Inicializacion de ARP*/
	if(arp_inicializa()!=0){
		return NIVEL_RED_ERROR;
	}
	
	/*Inicializacion de IP*/
	if(ip_inicializa()!=0){
		return NIVEL_RED_ERROR;
	}
	
	/*Inicializacion de ICMP*/
	if(icmp_inicializa()!=0){
		return NIVEL_RED_ERROR;
	}
	
	nivelRedInicializado=1;
	
	return NIVEL_RED_OK;
}

int nivelRed_finaliza()
{
	int status=NIVEL_RED_OK;
	
	if(!nivelRedInicializado){		/*Nivel de Red no inicializado*/
		return NIVEL_RED_OK;
	}
	
	/*Finalizacion de ICMP*/
	if(icmp_finaliza()!=0){
		status=NIVEL_RED_ERROR;
	}
	
	/*Finalizacion de IP*/
	if(ip_finaliza()!=0){
		status=NIVEL_RED_ERROR;
	}
	
	/*Finalizacion de ARP*/
	if(arp_finaliza()!=0){
		status=NIVEL_RED_ERROR;
	}
	
	return status;
}
